home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 October
/
EnigmA AMIGA RUN 22 (1997)(G.R. Edizioni)(IT)[!][issue 1997-10 & 11][EAR-CD VI].iso
/
earcd
/
util1
/
dover.lha
/
DoVer
/
src
/
GetResidentID.asm
< prev
next >
Wrap
Assembly Source File
|
1995-11-26
|
971b
|
47 lines
INCDIR Includes:
INCLUDE exec/resident.i
*********************************************************************
* IN: e.BPTR A0 first segment
* OUT: e.APTR D0 start of verstring
XDEF _GetResidentID
_GetResidentID move.l (a7)+,(a7) ;because Oberon 3.11 pushes any senseless waste
moveq #0,d0 ;return 0 if no match
.seg adda.l a0,a0 ;BPTR -> APTR
adda.l a0,a0
move.l (-4,a0),d1 ;D1 size of segment
move.l (a0)+,a1 ;A1 BPTR to next segment
subq.l #8,d1
lsr.l #1,d1 ;because WORDs
subq.l #1,d1 ;because DBcc
.lp cmpi.w #RTC_MATCHWORD,(a0)+
dbeq d1,.lp
beq .found
.next addq.w #1,d1 ;hunks > 128k
subq.l #1,d1
bcc .lp
move.l a1,a0
move.l a0,d1
bne .seg
rts
.found subq.w #1,d1 ;because DBcc
blo .next
subq.l #2,a0
cmp.l (RT_MATCHTAG,a0),a0
addq.l #2,a0
bne .lp
move.l (RT_IDSTRING-2,a0),d0 ;D0 = APTR verstring
rts
*********************************************************************
END